Micron Document
NexusPi Git Node


Displaying Raw • Download

lib/microReticulum/src/Interface.h 3dacaa409b3a889ef8ab49d94d64daaebc7f77ac (3dacaa40) Text, 10.67 KB

Tff7b72#Tff7b72pragma once

Tff7b72#Tff7b72include T8b949e"Identity.h"
Tff7b72#Tff7b72include T8b949e"Log.h"
Tff7b72#Tff7b72include T8b949e"Bytes.h"
Tff7b72#Tff7b72include T8b949e"Type.h"

Tff7b72#Tff7b72include T8b949e<ArduinoJson.h>

Tff7b72#Tff7b72include T8b949e<list>
Tff7b72#Tff7b72include T8b949e<memory>
Tff7b72#Tff7b72include T8b949e<cassert>
Tff7b72#Tff7b72include T8b949e<stdint.h>

Te6edf3namespace Te6edf3RNS Tb4b4b4{

Te6edf3class Te6edf3InterfaceTb4b4b4;
Te6edf3using Te6edf3HInterface Tff7b72= Te6edf3stdTff7b72:Tff7b72:Te6edf3shared_ptrTff7b72<Te6edf3InterfaceTff7b72>Tb4b4b4;

Te6edf3class Te6edf3AnnounceEntry Tb4b4b4{
Te6edf3publicTff7b72:
Te6edf3AnnounceEntryTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3AnnounceEntryTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3destinationTb4b4b4, Tffa657double Te6edf3timeTb4b4b4, Tffa657uint8_t Te6edf3hopsTb4b4b4, Tffa657double Te6edf3emittedTb4b4b4, Tff7b72const Te6edf3BytesTff7b72& Te6edf3rawTb4b4b4) Tff7b72:
Te6edf3_destinationTb4b4b4(Te6edf3destinationTb4b4b4)Tb4b4b4,
Te6edf3_timeTb4b4b4(Te6edf3timeTb4b4b4)Tb4b4b4,
Te6edf3_hopsTb4b4b4(Te6edf3hopsTb4b4b4)Tb4b4b4,
Te6edf3_emittedTb4b4b4(Te6edf3emittedTb4b4b4)Tb4b4b4,
Te6edf3_rawTb4b4b4(Te6edf3rawTb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3publicTff7b72:
Te6edf3Bytes Te6edf3_destinationTb4b4b4;
Tffa657double Te6edf3_time Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint8_t Te6edf3_hops Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint64_t Te6edf3_emitted Tff7b72= T79c0ff0Tb4b4b4;
Te6edf3Bytes Te6edf3_rawTb4b4b4;
Tb4b4b4}Tb4b4b4;

Te6edf3class Te6edf3InterfaceImpl Tff7b72: Te6edf3public Te6edf3stdTff7b72:Tff7b72:Te6edf3enable_shared_from_thisTff7b72<Te6edf3InterfaceImplTff7b72> Tb4b4b4{

Te6edf3protectedTff7b72:
Te6edf3InterfaceImplTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterfaceImpl object created, this: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3InterfaceImplTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3nameTb4b4b4) Tff7b72: Te6edf3_nameTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{ Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterfaceImpl object created, this: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3publicTff7b72:
Te6edf3virtual Tff7b72~Te6edf3InterfaceImplTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterfaceImpl object destroyed, this: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4)Tb4b4b4; Tb4b4b4}

Te6edf3protectedTff7b72:
Te6edf3virtual Tffa657bool Te6edf3startTb4b4b4(Tb4b4b4) Tb4b4b4{ Tff7b72return Tffa657trueTb4b4b4; Tb4b4b4}
Te6edf3virtual Tffa657void Te6edf3stopTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}
Te6edf3virtual Tffa657void Te6edf3loopTb4b4b4(Tb4b4b4) Tb4b4b4{Tb4b4b4}

T8b949e// CBA Virtual override method for custom interface to send outgoing data
Te6edf3virtual Tffa657void Te6edf3send_outgoingTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4) Tff7b72= T79c0ff0Tb4b4b4;

T8b949e// Whether this interface can currently deliver packets.
T8b949e// Default true; TCP interfaces override to check client count.
Te6edf3virtual Tffa657bool Te6edf3isConnectedTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Tffa657trueTb4b4b4; Tb4b4b4}
T8b949e// CBA Internal method to handle housekeeping for data going out on interface
Tffa657void Te6edf3handle_outgoingTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4)Tb4b4b4;
T8b949e// CBA Internal method to handle data coming in on interface and pass on to transport
Te6edf3virtual Tffa657void Te6edf3handle_incomingTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4)Tb4b4b4;

Te6edf3virtual Tff7b72const Te6edf3Bytes Te6edf3get_hashTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Tff7b72return Te6edf3IdentityTff7b72:Tff7b72:Te6edf3full_hashTb4b4b4(Tb4b4b4{Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3virtual Tff7b72inline Te6edf3stdTff7b72:Tff7b72:Te6edf3string Te6edf3toStringTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72return Ta5d6ff"Ta5d6ffInterface[Ta5d6ff" Tff7b72+ Te6edf3_name Tff7b72+ Ta5d6ff"Ta5d6ff]Ta5d6ff"Tb4b4b4; Tb4b4b4}

Te6edf3protectedTff7b72:
Te6edf3InterfaceTff7b72* Te6edf3_parent Tff7b72= Tffa657nullptrTb4b4b4;
Tffa657bool Te6edf3_IN Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_OUT Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_FWD Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_RPT Tff7b72= Tffa657falseTb4b4b4;
Te6edf3stdTff7b72:Tff7b72:Te6edf3string Te6edf3_nameTb4b4b4;
Tffa657size_t Te6edf3_rxb Tff7b72= T79c0ff0Tb4b4b4;
Tffa657size_t Te6edf3_txb Tff7b72= T79c0ff0Tb4b4b4;
Tffa657bool Te6edf3_online Tff7b72= Tffa657falseTb4b4b4;
Te6edf3Bytes Te6edf3_ifac_identityTb4b4b4;
Te6edf3Bytes Te6edf3_ifac_keyTb4b4b4;
Te6edf3Identity Te6edf3_ifac_id Tff7b72= Tb4b4b4{Te6edf3TypeTff7b72:Tff7b72:Te6edf3NONETb4b4b4}Tb4b4b4;
Tffa657uint8_t Te6edf3_ifac_size Tff7b72= T79c0ff8Tb4b4b4; T8b949e// DEFAULT_IFAC_SIZE for LoRa-type interfaces
Te6edf3TypeTff7b72:Tff7b72:Te6edf3InterfaceTff7b72:Tff7b72:Te6edf3modes Te6edf3_mode Tff7b72= Te6edf3TypeTff7b72:Tff7b72:Te6edf3InterfaceTff7b72:Tff7b72:Te6edf3MODE_NONETb4b4b4;
Tffa657uint32_t Te6edf3_bitrate Tff7b72= T79c0ff0Tb4b4b4;
Tffa657uint16_t Te6edf3_HW_MTU Tff7b72= T79c0ff0Tb4b4b4;
Tffa657bool Te6edf3_AUTOCONFIGURE_MTU Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_FIXED_MTU Tff7b72= Tffa657falseTb4b4b4;
Tffa657double Te6edf3_announce_allowed_at Tff7b72= T79c0ff0Tb4b4b4;
Tffa657float Te6edf3_announce_cap Tff7b72= T79c0ff0.0Tb4b4b4;
Te6edf3stdTff7b72:Tff7b72:Te6edf3listTff7b72<Te6edf3AnnounceEntryTff7b72> Te6edf3_announce_queueTb4b4b4;
Tffa657bool Te6edf3_is_connected_to_shared_instance Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_is_local_shared_instance Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_is_backbone Tff7b72= Tffa657falseTb4b4b4;
Tffa657bool Te6edf3_is_local_client Tff7b72= Tffa657falseTb4b4b4;
T8b949e//Bytes _hash;
Te6edf3HInterface Te6edf3_parent_interfaceTb4b4b4;
T8b949e//Transport& _owner;

Te6edf3friend Te6edf3class Te6edf3InterfaceTb4b4b4;
Tb4b4b4}Tb4b4b4;

Te6edf3class Te6edf3Interface Tb4b4b4{

Te6edf3publicTff7b72:
T8b949e// Which interface modes a Transport Node
T8b949e// should actively discover paths for.
Tff7b72static Tffa657uint8_t Te6edf3DISCOVER_PATHS_FORTb4b4b4;

Te6edf3publicTff7b72:
Te6edf3InterfaceTb4b4b4(Te6edf3TypeTff7b72:Tff7b72:Te6edf3NoneConstructor Te6edf3noneTb4b4b4) Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface NONE object created, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3InterfaceTb4b4b4(Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3objTb4b4b4) Tff7b72: Te6edf3_implTb4b4b4(Te6edf3objTb4b4b4.Te6edf3_implTb4b4b4) Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object copy created, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3InterfaceTb4b4b4(Te6edf3stdTff7b72:Tff7b72:Te6edf3shared_ptrTff7b72<Te6edf3InterfaceImplTff7b72>Tff7b72& Te6edf3implTb4b4b4) Tff7b72: Te6edf3_implTb4b4b4(Te6edf3implTb4b4b4) Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object created with shared impl, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3InterfaceTb4b4b4(Te6edf3InterfaceImplTff7b72* Te6edf3implTb4b4b4) Tff7b72: Te6edf3_implTb4b4b4(Te6edf3implTb4b4b4) Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object created with new impl, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3virtual Tff7b72~Te6edf3InterfaceTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object destroyed, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72inline Te6edf3InterfaceTff7b72& Te6edf3operator Tff7b72= Tb4b4b4(Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3objTb4b4b4) Tb4b4b4{
Te6edf3_impl Tff7b72= Te6edf3objTb4b4b4.Te6edf3_implTb4b4b4;
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object copy created by assignment, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72*Te6edf3thisTb4b4b4;
Tb4b4b4}
Tff7b72inline Te6edf3InterfaceTff7b72& Te6edf3operator Tff7b72= Tb4b4b4(Te6edf3InterfaceImplTff7b72* Te6edf3implTb4b4b4) Tb4b4b4{
Te6edf3_implTb4b4b4.Te6edf3resetTb4b4b4(Te6edf3implTb4b4b4)Tb4b4b4;
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object copy created by assignment, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72*Te6edf3thisTb4b4b4;
Tb4b4b4}
Tff7b72inline Te6edf3operator Tffa657boolTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object bool, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72= Tffa657nullptrTb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3operator Tff7b72< Tb4b4b4(Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3objTb4b4b4) Tff7b72const Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object <, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72< Te6edf3objTb4b4b4.Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3operator Tff7b72> Tb4b4b4(Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3objTb4b4b4) Tff7b72const Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object <, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72> Te6edf3objTb4b4b4.Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3operator Tff7b72=Tff7b72= Tb4b4b4(Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3objTb4b4b4) Tff7b72const Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object ==, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72=Tff7b72= Te6edf3objTb4b4b4.Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3operator Tff7b72!Tff7b72= Tb4b4b4(Tff7b72const Te6edf3InterfaceTff7b72& Te6edf3objTb4b4b4) Tff7b72const Tb4b4b4{
Te6edf3MEMFTb4b4b4(Ta5d6ff"Ta5d6ffInterface object !=, this: 0x%X, impl: 0x%XTa5d6ff"Tb4b4b4, Te6edf3thisTb4b4b4, Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4) Tff7b72!Tff7b72= Te6edf3objTb4b4b4.Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Te6edf3InterfaceImplTff7b72* Te6edf3getTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3clearTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3_implTb4b4b4.Te6edf3resetTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Te6edf3publicTff7b72:
Tff7b72inline Tffa657bool Te6edf3startTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3startTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3stopTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3loopTb4b4b4(Tb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3loopTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3Bytes Te6edf3get_hashTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3get_hashTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tffa657void Te6edf3process_announce_queueTb4b4b4(Tb4b4b4)Tb4b4b4;

T8b949e// CBA ACCUMULATES
Tff7b72inline Tffa657void Td2a8ffadd_announceTb4b4b4(Te6edf3AnnounceEntryTff7b72& Te6edf3entryTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_announce_queueTb4b4b4.Te6edf3push_backTb4b4b4(Te6edf3entryTb4b4b4)Tb4b4b4; Tb4b4b4}

Te6edf3protectedTff7b72:
Tff7b72inline Tffa657void Te6edf3send_outgoingTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3send_outgoingTb4b4b4(Te6edf3dataTb4b4b4)Tb4b4b4; Tb4b4b4}
Te6edf3publicTff7b72:
T8b949e//inline void handle_incoming(const Bytes& data) { assert(_impl); _impl->handle_incoming(data); }
T8b949e// Public method to handle data coming in on interface and pass on to impl
Tffa657void Te6edf3handle_incomingTb4b4b4(Tff7b72const Te6edf3BytesTff7b72& Te6edf3dataTb4b4b4)Tb4b4b4;

Te6edf3protectedTff7b72:
T8b949e// setters
Tff7b72inline Tffa657void Te6edf3INTb4b4b4(Tffa657bool Te6edf3INTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_IN Tff7b72= Te6edf3INTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3OUTTb4b4b4(Tffa657bool Te6edf3OUTTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_OUT Tff7b72= Te6edf3OUTTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3FWDTb4b4b4(Tffa657bool Te6edf3FWDTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_FWD Tff7b72= Te6edf3FWDTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3RPTTb4b4b4(Tffa657bool Te6edf3RPTTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_RPT Tff7b72= Te6edf3RPTTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3nameTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3nameTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_name Tff7b72= Te6edf3nameTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3bitrateTb4b4b4(Tffa657uint32_t Te6edf3bitrateTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_bitrate Tff7b72= Te6edf3bitrateTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3onlineTb4b4b4(Tffa657bool Te6edf3onlineTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_online Tff7b72= Te6edf3onlineTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3announce_allowed_atTb4b4b4(Tffa657double Te6edf3announce_allowed_atTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_announce_allowed_at Tff7b72= Te6edf3announce_allowed_atTb4b4b4; Tb4b4b4}
Te6edf3publicTff7b72:
T8b949e// getters
Tff7b72inline Tffa657bool Te6edf3INTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_INTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3OUTTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_OUTTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3FWDTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_FWDTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3RPTTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_RPTTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3onlineTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_onlineTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3stdTff7b72:Tff7b72:Te6edf3string Te6edf3nameTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_nameTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Te6edf3ifac_identityTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_ifac_identityTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3BytesTff7b72& Te6edf3ifac_keyTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_ifac_keyTb4b4b4; Tb4b4b4}
Tff7b72inline Tff7b72const Te6edf3IdentityTff7b72& Te6edf3ifac_idTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_ifac_idTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657uint8_t Te6edf3ifac_sizeTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_ifac_sizeTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3ifac_sizeTb4b4b4(Tffa657uint8_t Te6edf3sizeTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_ifac_size Tff7b72= Te6edf3sizeTb4b4b4; Tb4b4b4}
Tffa657void Te6edf3setup_ifacTb4b4b4(Tff7b72const Tffa657charTff7b72* Te6edf3ifac_netnameTb4b4b4, Tff7b72const Tffa657charTff7b72* Te6edf3ifac_netkeyTb4b4b4)Tb4b4b4;
Tff7b72inline Te6edf3TypeTff7b72:Tff7b72:Te6edf3InterfaceTff7b72:Tff7b72:Te6edf3modes Td2a8ffmodeTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_modeTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Td2a8ffmodeTb4b4b4(Te6edf3TypeTff7b72:Tff7b72:Te6edf3InterfaceTff7b72:Tff7b72:Te6edf3modes Te6edf3modeTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_mode Tff7b72= Te6edf3modeTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657uint32_t Td2a8ffbitrateTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_bitrateTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657uint16_t Td2a8ffHW_MTUTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_HW_MTUTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffAUTOCONFIGURE_MTUTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_AUTOCONFIGURE_MTUTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Td2a8ffFIXED_MTUTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_FIXED_MTUTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657double Td2a8ffannounce_allowed_atTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_announce_allowed_atTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657float Td2a8ffannounce_capTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_announce_capTb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3stdTff7b72:Tff7b72:Te6edf3listTff7b72<Te6edf3AnnounceEntryTff7b72>Tff7b72& Te6edf3announce_queueTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_announce_queueTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3is_connected_to_shared_instanceTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_is_connected_to_shared_instanceTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3is_local_shared_instanceTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_is_local_shared_instanceTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3is_backboneTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_is_backboneTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3is_backboneTb4b4b4(Tffa657bool Te6edf3valTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_is_backbone Tff7b72= Te6edf3valTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3is_local_clientTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_is_local_clientTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657void Te6edf3is_local_clientTb4b4b4(Tffa657bool Te6edf3valTb4b4b4) Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Te6edf3_implTff7b72-Tff7b72>Te6edf3_is_local_client Tff7b72= Te6edf3valTb4b4b4; Tb4b4b4}
Tff7b72inline Tffa657bool Te6edf3isConnectedTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3isConnectedTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}
Tff7b72inline Te6edf3HInterface Te6edf3parent_interfaceTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Te6edf3assertTb4b4b4(Te6edf3_implTb4b4b4)Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3_parent_interfaceTb4b4b4; Tb4b4b4}

Te6edf3virtual Tff7b72inline Te6edf3stdTff7b72:Tff7b72:Te6edf3string Te6edf3toStringTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{ Tff7b72if Tb4b4b4(Tff7b72!Te6edf3_implTb4b4b4) Tff7b72return Ta5d6ff"Ta5d6ff"Tb4b4b4; Tff7b72return Te6edf3_implTff7b72-Tff7b72>Te6edf3toStringTb4b4b4(Tb4b4b4)Tb4b4b4; Tb4b4b4}

Tff7b72#Tff7b72ifndef NDEBUG
Tff7b72inline Te6edf3stdTff7b72:Tff7b72:Te6edf3string Te6edf3debugStringTb4b4b4(Tb4b4b4) Tff7b72const Tb4b4b4{
Te6edf3stdTff7b72:Tff7b72:Te6edf3string Te6edf3dumpTb4b4b4;
Te6edf3dump Tff7b72= Ta5d6ff"Ta5d6ffInterface object, this: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3thisTb4b4b4) Tff7b72+ Ta5d6ff"Ta5d6ff, data: Ta5d6ff" Tff7b72+ Te6edf3stdTff7b72:Tff7b72:Te6edf3to_stringTb4b4b4(Tb4b4b4(Tffa657uintptr_tTb4b4b4)Te6edf3_implTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3dumpTb4b4b4;
Tb4b4b4}
Tff7b72#Tff7b72endif

Te6edf3protectedTff7b72:
Te6edf3stdTff7b72:Tff7b72:Te6edf3shared_ptrTff7b72<Te6edf3InterfaceImplTff7b72> Te6edf3_implTb4b4b4;

Te6edf3friend Te6edf3class Te6edf3TransportTb4b4b4;
Tb4b4b4}Tb4b4b4;

Tb4b4b4}

T8b949e/*
namespace ArduinoJson {
inline bool convertToJson(const RNS::Interface& src, JsonVariant dst) {
TRACE("<<< Serializing Interface");
if (!src) {
return dst.set(nullptr);
}
TRACE("<<< Interface hash " + src.get_hash().toHex());
return dst.set(src.get_hash().toHex());
}
void convertFromJson(JsonVariantConst src, RNS::Interface& dst);
inline bool canConvertFromJson(JsonVariantConst src, const RNS::Interface&) {
return src.is<const char*>() && strlen(src.as<const char*>()) == 64;
}
}
*/
T8b949e/*
namespace ArduinoJson {
template <>
struct Converter<RNS::Interface> {
static bool toJson(const RNS::Interface& src, JsonVariant dst) {
if (!src) {
return dst.set(nullptr);
}
TRACE("<<< Serializing interface hash " + src.get_hash().toHex());
return dst.set(src.get_hash().toHex());
}
static RNS::Interface fromJson(JsonVariantConst src) {
if (!src.isNull()) {
RNS::Bytes hash;
hash.assignHex(src.as<const char*>());
TRACE(">>> Deserialized interface hash " + hash.toHex());
TRACE(">>> Querying transport for interface");
// Query transport for matching interface
return RNS::Interface::find_interface_from_hash(hash);
}
else {
return {RNS::Type::NONE};
}
}
static bool checkJson(JsonVariantConst src) {
return src.is<const char*>() && strlen(src.as<const char*>()) == 64;
}
};
}
*/

Served by rngit 1.4.2 - Generated in 0.1s